#pragma once

#define _CRT_SECURE_NO_WARNINGS

#include<stdio.h>
#include<string.h>
#include<assert.h>
#include<stdlib.h>

#pragma region MAX
#define MAX_SIZE 100
#define MAX_NAME 20
#define MAX_SEX 10
#define MAX_TEL 12
#define MAX_ADDR 30
#pragma endregion

//类型的声明

//人的信息
typedef struct PeoInfo
{
	char name[MAX_NAME];
	int age;
	char sex[MAX_SEX];
	char tel[MAX_TEL];
	char addr[MAX_ADDR];
}PeoInfo;

//静态通讯录
//typedef struct Contact {
//	PeoInfo data[MAX_SIZE];//存放人的信息
//	int count;//当前通讯录中实际人的个数
//}Contact;

//动态通讯录
typedef struct Contact {
	PeoInfo* data;//存放人的信息
	int count;//当前通讯录中实际人的个数
	int capacity;//容量
}Contact;

//初始化通讯录
int InitContact(Contact* pc);

//增加联系人到通讯录
void AddContact(Contact* pc);

//打印通讯录中信息
void ShowContact(const Contact* pc);

//删除指定联系人
void DelContact(Contact* pc);

//查找指定联系人
void SearchContact(Contact* pc);

//修改指定联系人
void ModifyContact(Contact* pc);

//按名字排序通讯录
void SortContact(Contact* pc);

//销毁通讯录
void DestroyContact(Contact* pc);

//保存通讯录
void SaveContact(Contact*pc);

//加载通讯录
void LoadContact(Contact* pc);

void CheckCapacity(Contact* pc);